#ifndef MCP3903
#define	MCP3903

// ***************************************************************************
// CHANGE LOG
//
// ***************************************************************************

// ***************************************************************************
// ***************************************************************************
// Section: Includes
// ***************************************************************************
// ***************************************************************************
#include "IAnalogDigitalConverter.h"
#include "Spi.h"

// ***************************************************************************
// ***************************************************************************
// Section: Constants & Data Types
// ***************************************************************************
// ***************************************************************************

/*! \brief Allows control of a MCP3903 Analog To Digital Converter (ADC)
 */
class Mcp3903 : public IAnalogDigitalConverter
{
  public:
	Mcp3903(Spi *spi, float referenceVoltage, unsigned char bitResolution);
	virtual ~Mcp3903();
	virtual float Read(UINT32 channel);
	virtual void SetReferenceVoltage(float referenceVoltage);
  private:
	Spi *_spi;
	float _referenceVoltage;
	UINT32 _quantizationLevels;
};

#endif

